package cn.tedu.csmall.cart.webapi.service.impl;

import cn.tedu.csmall.cart.service.ICartService;
import cn.tedu.csmall.cart.webapi.mapper.CartMapper;
import cn.tedu.csmall.commons.pojo.cart.dto.CartAddDTO;
import cn.tedu.csmall.commons.pojo.cart.model.Cart;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@DubboService
@Service
@Slf4j
public class CartServiceImpl implements ICartService {
    // 装配CartMapper对象
    @Autowired
    private CartMapper cartMapper;

    @Override
    public void cartAdd(CartAddDTO cartAddDTO) {
        // 当前方法参数类型是CartAddDTO,但是执行新增的mapper方法参数类型是Cart
        // 所以我们需要先将cartAddDTO对象中的属性赋值到Cart类型对象中
        // 先实例化一个Cart类型对象
        Cart cart=new Cart();
        // 利用BeanUtils工具类中,能够将不同类型对象的同名属性赋值的方法
        BeanUtils.copyProperties(cartAddDTO,cart);
        // 具备了参数的条件之后,可以执行mapper的方法进行数据库的新增
        cartMapper.insertCart(cart);
        // 运行完成,log输出一下
        log.info("新增购物车商品成功:{}",cart);
    }
    @Override
    public void deleteUserCart(String userId, String commodityCode) {
        // 删除功能需要的userId和commodityCode直接使用即可
        cartMapper.deleteCartByUserIdAndCommodityCode(userId,commodityCode);
        // 输出日志即可
        log.info("购物车删除完成!");
    }
}
